package com.dreamteam.hackwaterloo.activities; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import android.content.Intent; import android.content.SharedPreferences; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.content.pm.Signature; import android.os.Bundle; import android.text.Editable; import android.text.InputType; import android.text.TextWatcher; import android.util.Base64; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import com.actionbarsherlock.app.SherlockFragmentActivity; import com.dreamteam.carpuwl.R; import com.dreamteam.hackwaterloo.User; import com.dreamteam.hackwaterloo.utils.server.CreateUserTask; import com.facebook.Request; import com.facebook.Response; import com.facebook.Session; import com.facebook.SessionState; import com.facebook.model.GraphUser; public class ActivityLogIn extends SherlockFragmentActivity implements OnClickListener, TextWatcher { private static final String TAG = ActivityLogIn.class.getSimpleName(); private static final String SHARED_PREF_LOG_IN = "com.dreamteam.hackwaterloo.fileNameSharedPrefLogin"; private static final String KEY_LOGGED_IN = "com.dreamteam.hackwaterloo.keyLoggedIn"; private static final int PHONE_NUMBER_LENGTH = 10; private Button mButtonFacebook; private EditText mEditTextPhoneInput; private SharedPreferences mSharedPref; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_log_in); mButtonFacebook = (Button) findViewById(R.id.log_in_button_facebook); mEditTextPhoneInput = (EditText) findViewById(R.id.log_in_edittext_phone_input); mButtonFacebook.setOnClickListener(this); mButtonFacebook.setEnabled(false); mEditTextPhoneInput.addTextChangedListener(this); mEditTextPhoneInput.setInputType(InputType.TYPE_CLASS_PHONE); mSharedPref = getSharedPreferences(SHARED_PREF_LOG_IN, MODE_PRIVATE); if (mSharedPref.getBoolean(KEY_LOGGED_IN, false)) { Log.d("ryan", "auto login"); submiteFacebookRequest(); } logKeyHash(); } private void logKeyHash() { PackageInfo info; try { info = getPackageManager().getPackageInfo("com.dreamteam.hackwaterloo", PackageManager.GET_SIGNATURES); for (Signature signature : info.signatures) { MessageDigest md; md = MessageDigest.getInstance("SHA"); md.update(signature.toByteArray()); String something = new String(Base64.encode(md.digest(), 0)); //String something = new String(Base64.encodeBytes(md.digest())); Log.e("hash key", something); } } catch (NameNotFoundException e1) { Log.e("name not found", e1.toString()); } catch (NoSuchAlgorithmException e) { Log.e("no such an algorithm", e.toString()); } catch (Exception e) { Log.e("exception", e.toString()); } } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.log_in_button_facebook: submiteFacebookRequest(); } } private void submiteFacebookRequest() { Log.i(TAG, "attempt facebook login"); Session.openActiveSession(this, true, new Session.StatusCallback() { @SuppressWarnings("deprecation") @Override public void call(Session session, SessionState statel, Exception exception) { if (session.isOpened()) { Request.executeMeRequestAsync(session, new Request.GraphUserCallback() { @Override public void onCompleted(GraphUser user, Response response) { if (user != null) { Log.d("Log","Hello " + user.getName() + "!"); Log.d("Log", "Hello " + user.getId() ); // Get details, set the user data object User.initInstance(Integer.parseInt(user.getId()), user.getName(), mEditTextPhoneInput.getText().toString()); create_user(Integer.parseInt(user.getId()),user.getName(), mEditTextPhoneInput.getText().toString()); mSharedPref.edit().putBoolean(KEY_LOGGED_IN, true).commit(); Intent intent = new Intent(ActivityLogIn.this, ActivityMain.class); startActivityForResult(intent, 1); } } }); } else{ Log.d("Facebook", "Not logged in"); } } }); } private void create_user(int fb_pk, String name, String phone){ CreateUserTask createUserTask = new CreateUserTask(name, phone, fb_pk); createUserTask.executeParallel(); } @Override public void afterTextChanged(Editable arg0) { } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence input, int start, int before, int count) { mButtonFacebook.setEnabled(input.length() == PHONE_NUMBER_LENGTH); } }